﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration;
using Microsoft.ApplicationBlocks.Data;
using Entities;

namespace DAL
{
    public class PublicacionDAL
    {
        static string strCadenaConexion = System.Configuration.ConfigurationManager.ConnectionStrings["ConexionBaseDesarrollo"].ConnectionString;

        public static long Nuevo(Publicacion parPublicacion)
        {
            long longRetorno = 0;
            try
            {
                longRetorno = long.Parse(SqlHelper.ExecuteScalar(strCadenaConexion, "spPublicacionNuevo",
                parPublicacion.Negocio.IDNegocio,
                parPublicacion.Producto.IDProducto,
                parPublicacion.FechaAlta,
                parPublicacion.Precio,
                parPublicacion.Descripcion).ToString());
                return longRetorno;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Modificar(Publicacion parPublicacion)
        {
            try
            {
                SqlHelper.ExecuteNonQuery(strCadenaConexion, "spPublicacionModificar",
                parPublicacion.IDPublicacion,
                parPublicacion.Negocio.IDNegocio,
                parPublicacion.Producto.IDProducto,
                parPublicacion.FechaAlta,
                parPublicacion.Precio,
                parPublicacion.Descripcion
                );
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Eliminar(long parIDPublicacion)
        {
            try
            {
                SqlHelper.ExecuteNonQuery(strCadenaConexion, "spPublicacionEliminar", parIDPublicacion);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static Publicacion ObtenerUno(long parIDPublicacion)
        {
            try
            {
                Publicacion oPublicacion = new Publicacion(true);
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spPublicacionBuscarUnoPorIDPublicacion", parIDPublicacion).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    oPublicacion.IDPublicacion = long.Parse(dt.Rows[0]["IDPublicacion"].ToString());
                    oPublicacion.Negocio = Negocio.BuscarUno(long.Parse(dt.Rows[0]["IDNegocio"].ToString()), false);
                    oPublicacion.Producto = Producto.BuscarUno(long.Parse(dt.Rows[0]["IDProducto"].ToString()));
                    oPublicacion.FechaAlta = DateTime.Parse(dt.Rows[0]["FechaAlta"].ToString());
                    if (dt.Rows[0]["FechaBaja"] != DBNull.Value)
                        oPublicacion.FechaBaja = DateTime.Parse(dt.Rows[0]["FechaBaja"].ToString());
                    oPublicacion.Precio = decimal.Parse(dt.Rows[0]["Precio"].ToString());
                    oPublicacion.Descripcion = dt.Rows[0]["Descripcion"].ToString();
                }
                return oPublicacion;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<Publicacion> BuscarPorIDNegocio(long parIDNegocio)
        {
            try
            {
                Publicacion oPublicacion;
                List<Publicacion> ListaPublicacions = new List<Publicacion>();
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spPublicacionBuscarPorIDNegocio", parIDNegocio).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        oPublicacion = new Publicacion(true);
                        oPublicacion.IDPublicacion = long.Parse(dr["IDPublicacion"].ToString());
                        oPublicacion.Negocio = Negocio.BuscarUno(long.Parse(dr["IDNegocio"].ToString()), false);
                        oPublicacion.Producto = Producto.BuscarUno(long.Parse(dr["IDProducto"].ToString()));
                        oPublicacion.FechaAlta = DateTime.Parse(dr["FechaAlta"].ToString());
                        if (dt.Rows[0]["FechaBaja"] != DBNull.Value)
                            oPublicacion.FechaBaja = DateTime.Parse(dr["FechaBaja"].ToString());
                        oPublicacion.Precio = decimal.Parse(dr["Precio"].ToString());
                        oPublicacion.Descripcion = dr["Descripcion"].ToString();
                        ListaPublicacions.Add(oPublicacion);
                    }
                }
                return ListaPublicacions;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
